package com.zero.common.handler;


import com.zero.common.constants.CodeConstants;
import com.zero.common.domain.Result;
import com.zero.common.exception.ServiceException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/*
*   全局异常处理 类
*       ！！！！！！！！！！！！！！！！！！！！！！！注意！！！！！！！！！！！！！！！！！！！！！！！！！！！
*       定义在 公共模块 中的全局异常处理器，其子模块是扫描不到的，会出现全局异常处理器失效的情况
*       解决办法：在子模块的启动类上加 @ComponentScan 注解，设定范围要包括全局异常处理器所在包，如：@ComponentScan(basePackages = {"com.zero"})
*                 但是，感觉扫描范围有点太大了...
* */
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody   // 返回JSON字符串
    public Result exceptionHandler(Exception e){

        // 处理 业务异常
        if (e instanceof ServiceException) {
            System.out.println(e.getMessage()); // 将异常信息打印在控制台
            return new Result(CodeConstants.SERVICE_ERROR,e.getMessage());
        }

        // 其他异常
        return new Result(CodeConstants.OTHER_ERROR,e.getMessage());

    }


}
